package com.xiaoshuidi.cloud.module.finance.service.finance;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.flow.*;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.reconciliation.FinanceReconciliationFlowExcelVO;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.reconciliation.FinanceReconciliationPageResult;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.finance.FinanceMoneyFlowDO;

import java.util.Collection;
import java.util.List;

public interface FinanceMoneyFlowService {
    FinanceMoneyFlowDO getById(Long id);

    PageResult<FinanceMoneyFlowDO> getFinanceMoneyFlowPage(FinanceMoneyFlowPageReqVO reqVO);

    PageResult<FinanceMoneyFlowDO> getConfirmFinanceMoneyFlowPage(FinanceMoneyFlowPageReqVO reqVO);

    List<FinanceMoneyFlowDO> getFinanceMoneyFlowListBySourceBizIdAndSourceBizType(String sourceBizType,
                                                                                  Collection<String> sourceBizId);

    String nextFlowNo();

    void confirm(Long id, FinanceMoneyFlowConfirmReqVO reqVO);

    void returnMoney(Long id, FinanceMoneyFlowConfirmReqVO reqVO);

    FinanceMoneyFlowPageResult getFinanceMoneyFlowSummary(FinanceMoneyFlowPageReqVO reqVO);

    FinanceMoneyFlowConfirmPageResult getFinanceMoneyFlowConfirmSummary(FinanceMoneyFlowPageReqVO reqVO);

    FinanceMoneyFlowDO getBySourceBizIdAndSourceBizType(String sourceBizId, String sourceBizType);

    List<FinanceMoneyFlowDO> getListBySourceBizIdAndSourceBizType(String sourceBizId, String sourceBizType);

    FinanceReconciliationPageResult getReconciliationFlowSummary(FinanceMoneyFlowPageReqVO reqVO);


    List<FinanceFlowMoneyVO> getFlow(String orderNo);

    PageResult<FinanceMoneyFlowDO> pageFinanceMoneyFlow(FinanceMoneyFlowPageReqVO reqVO);

    List<FinanceReconciliationFlowExcelVO> getFinanceMoneyFlowExport(FinanceMoneyFlowPageReqVO reqVO);

}
